Post-Race UCLA Triathlon: Tritonman¶

The Bruins took on Tritonman hosted by UCSD Triathlon, a sprint distance triathlon. The planned 750-meter open water swim was canceled for the draft legal race and was instead replaced with an opening leg of one lap of the run course, which is approximately 1 mile. The bike leg, 21 kilometers long (~13 miles), consisted of three laps around Fiesta Island, and was followed by a 5-kilometer run to end the race.

Race highlight: On Saturday the Bruins took on the National Triathlon Development Race-certified Draft Legal division, where athletes compete for an elite license. In the men's race, UCLA’s Edoardo Leone and Colorado’s Matheus Menezes could not be separated until the final sprint, where Edo triumphed, tumbling over the line just a whisker ahead in an epic finish securing his first IRONMAN pro card for Oceanside 70.3 in a time of 52:02. At Oceanside, Edo finished 42nd in the men's pro field, outperforming his seed by 27 places at his first-ever 70.3. Edo was joined by fellow Bruins Miisa Makela and Austin Liu as Oceanside finishers.

The following includes results for every Bruin at this race, personalized graphs (for competitors whose split time data was available) showing how Bruins fared at each stage of the race, and informative statistics describing which legs best predicted the final results. This data analysis intends to provide grounds for celebration and further improvement. In the words of UCLA Triathlon alumnus Nathan Montanez, "knowing is half the battle." My hope is that this information is more visually appealing and engaging than a traditional essay-format presentation.

Please contact Lukas Rhoades at lukasrhoades11@gmail.com with any questions.

Draft Legal Race¶

In [1]:
from tristats import trirace
tritonman_dl = trirace()
tritonman_dl.set_legs(leg1="Run1", leg3="Run2")
tritonman_dl.get_data_active("TritonmanDraftLegal2025")
tritonman_dl.data.replace("--", None, inplace=True)

Men's team results¶

In [2]:
mens_dl = trirace()
mens_dl.set_legs(leg1="Run1", leg3="Run2")
mens_dl.set_data(tritonman_dl.get_gender("Male"))
mens_dl.data.reset_index(drop=True, inplace=True)
ucla_men_dl = ["Edoardo Giuseppe Leone", "Marius Genton", "Emiliano Olivo-Cauberghs"]
mens_dl.data[mens_dl.data.Name.isin(ucla_men_dl)]
Out[2]:
Name Gender Age Run1 T1 Bike T2 Run2 Total
0 Edoardo Giuseppe Leone Male 23 00:05:34 00:00:22 00:30:27 00:00:22 00:15:16 00:52:02
45 Marius Genton Male 21 00:06:31 00:00:25 00:31:47 00:00:28 00:19:49 00:59:01
56 Emiliano Olivo-Cauberghs Male 20 00:06:08 00:00:33 00:31:57 00:00:27 00:25:03 01:04:11

Women's team results¶

In [3]:
womens_dl = trirace()
womens_dl.set_legs(leg1="Run1", leg3="Run2")
womens_dl.set_data(tritonman_dl.get_gender("Female"))
womens_dl.data.reset_index(drop=True, inplace=True)
ucla_women_dl = ["Josie Goodson", "Eleanor Casey", "Kayla Kashima", "Miisa Makela", "Aedin McGoldrick", "Cassaundra Pino"]
womens_dl.data[womens_dl.data.Name.isin(ucla_women_dl)]
Out[3]:
Name Gender Age Run1 T1 Bike T2 Run2 Total
16 Josie Goodson Female 21 00:07:04 00:00:46 00:36:05 00:00:47 00:20:03 01:04:47
17 Cassaundra Pino Female 28 00:07:01 00:00:40 00:36:08 00:00:39 00:20:17 01:04:47
26 Eleanor Casey Female 23 00:07:15 00:00:51 00:37:38 00:00:59 00:20:49 01:07:34
30 Kayla Kashima Female 20 00:07:23 00:00:45 00:37:34 00:00:53 00:21:25 01:08:01
37 Aedin McGoldrick Female 21 00:07:11 00:00:41 00:39:57 00:00:39 00:23:26 01:11:56
47 Miisa Makela Female 23 00:09:29 00:00:38 00:44:11 00:00:49 00:28:35 01:23:44

Women's time distribution by legs¶

In [4]:
womens_dl.get_histograms("Tritonman Women's Draft Legal Race")
No description has been provided for this image

Men's time distribution by legs¶

In [5]:
mens_dl.get_histograms("Tritonman Men's Draft Legal Race")
No description has been provided for this image

Men's position charts¶

In [6]:
mens_dl.get_position()
for athlete in ucla_men_dl:
    mens_dl.get_place_chart(athlete)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Women's position charts¶

In [7]:
womens_dl.get_position()
for athlete in ucla_women_dl:
    womens_dl.get_place_chart(athlete)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Women's race leg importance¶

In [8]:
womens_dl.race_leg_imp("Tritonman Women's Draft Legal Race")
No description has been provided for this image

Men's race leg importance¶

In [9]:
mens_dl.race_leg_imp("Tritonman Men's Draft Legal Race")
No description has been provided for this image

Classic Race¶

In [10]:
tritonman_classic = trirace()
tritonman_classic.get_data_active("TritonmanClassic2025")
tritonman_classic.data.replace("--", None, inplace=True)

Women's team results¶

In [11]:
womens_classic = trirace()
womens_classic.set_data(tritonman_classic.get_gender("Female"))
womens_classic.data.reset_index(drop=True, inplace=True)
ucla_women_classic = ["Josie Goodson", "Josephine Borsetto", "Aliyah Anderson", "Alison Arndt", "Natasha Cosgrove", "Justine Marques",
                      "Emma M", "Lillian Aronovitz", "Brianna Choi", "Jolie Rice", "Triniti Santos", "Nicole Eskigian", "Shelby Jackson"]
womens_classic.data[womens_classic.data.Name.isin(ucla_women_classic)]
Out[11]:
Name Gender Age Swim T1 Bike T2 Run Total
19 Josie Goodson Female 21 00:14:07 00:01:13 00:38:58 00:01:12 00:21:08 01:16:39
33 Josephine Borsetto Female 22 00:14:28 00:01:02 00:41:21 00:00:38 00:21:20 01:18:51
43 Lillian Aronovitz Female 21 00:14:02 00:01:50 00:41:31 00:00:49 00:22:47 01:21:01
56 Aliyah Anderson Female 21 00:15:39 00:00:51 00:43:34 00:00:46 00:21:52 01:22:44
65 Shelby Jackson Female 23 00:12:45 00:01:21 00:46:18 00:00:27 00:23:32 01:24:25
72 Alison Arndt Female 21 00:16:57 00:01:32 00:43:25 00:00:46 00:22:46 01:25:28
107 Jolie Rice Female 21 00:14:13 00:02:37 00:49:51 00:00:31 00:26:24 01:33:37
113 Brianna Choi Female 19 00:16:06 00:02:05 00:51:24 00:00:37 00:25:23 01:35:35
115 Justine Marques Female 20 00:14:03 00:02:43 00:51:46 00:00:30 00:26:57 01:36:01
124 Nicole Eskigian Female 23 00:18:56 00:02:37 00:52:53 00:00:53 00:26:55 01:42:16
125 Emma M Female 21 00:18:46 00:02:57 00:52:44 00:00:47 00:27:03 01:42:19
136 Natasha Cosgrove Female 19 00:22:34 None None None 00:24:50 01:45:36
140 Triniti Santos Female 20 00:16:19 00:02:50 00:57:55 00:03:24 00:29:26 01:49:56

Men's team results¶

In [12]:
mens_classic = trirace()
mens_classic.set_data(tritonman_classic.get_gender("Male"))
mens_classic.data.reset_index(drop=True, inplace=True)
ucla_men_classic = ["Edoardo Giuseppe Leone", "Austin Liu", "Emmett Cocke", "Jacob Niyazov", "Lachlan Guo", "Lucas Angier"]
mens_classic.data[mens_classic.data.Name.isin(ucla_men_classic)]
Out[12]:
Name Gender Age Swim T1 Bike T2 Run Total
0 Edoardo Giuseppe Leone Male 23 00:10:52 00:00:38 00:30:04 00:00:35 00:15:59 00:58:10
79 Emmett Cocke Male 24 NaN NaN NaN NaN NaN 01:14:42
117 Jacob Niyazov Male 20 00:17:27 00:01:56 00:39:54 00:00:39 00:18:59 01:18:57
155 Lachlan Guo Male 20 00:14:43 00:01:23 00:38:48 00:00:47 00:28:14 01:23:56
159 Austin Liu Male 24 00:18:18 00:01:05 00:37:06 00:01:53 00:26:09 01:24:34
190 Lucas Angier Male 19 00:17:42 00:01:54 00:45:57 00:00:19 00:23:46 01:29:39

Men's time distribution by legs¶

In [13]:
mens_classic.get_histograms("Tritonman Men's Classic Race")
No description has been provided for this image

Women's time distribution by legs¶

In [14]:
womens_classic.get_histograms("Tritonman Women's Classic Race")
No description has been provided for this image

Women's position charts¶

In [15]:
womens_classic.get_position()
for athlete in ucla_women_classic:
    womens_classic.get_place_chart(athlete)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Men's position charts¶

In [16]:
mens_classic.get_position()
for athlete in ucla_men_classic:
    mens_classic.get_place_chart(athlete)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Men's race leg importance¶

In [17]:
mens_classic.race_leg_imp("Tritonman Men's Classic Race")
No description has been provided for this image

Women's race leg importance¶

In [18]:
womens_classic.race_leg_imp("Tritonman Women's Classic Race")
No description has been provided for this image